home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 1191 / 1191.xpi / chrome / reminderfox.jar / content / reminderfox / utils / rmFxUtils.js < prev   
Text File  |  2009-11-05  |  11KB  |  291 lines

  1.  
  2. var gRmFx_Messenger;    // TB1, TB2, TB3, PB, SM 
  3. var gRmFx_AB3;            // true: TB/AB3 installed 
  4.  
  5.     
  6. /**
  7.  * Reminderfox Utilities - general
  8.  */
  9.  
  10. function rmFxUtil () { 
  11.  
  12.     rmFxUtil.encodeUTF8    = function (text) {
  13.     // =========================================================================
  14.         return rmFxUtil.convertFromUnicode("UTF-8", text).replace(/(\r\n)|\n/g, "\r\n");
  15.     }
  16.                 
  17.     rmFxUtil.convertFromUnicode = function (aCharset, aSrc) {
  18.     // =========================================================================
  19.         var unicodeConverter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
  20.                                      .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  21.         unicodeConverter.charset = aCharset;
  22.         return unicodeConverter.ConvertFromUnicode(aSrc);
  23.     }
  24.     
  25.     rmFxUtil.getIOService = function () {
  26.     // =========================================================================
  27.         if (rmFxUtil.getIOService.mObject === undefined) {
  28.             rmFxUtil.getIOService.mObject = Components.classes["@mozilla.org/network/io-service;1"]
  29.                             .getService(Components.interfaces.nsIIOService2);
  30.         }
  31.         return rmFxUtil.getIOService.mObject;
  32.     }
  33.  
  34.     rmFxUtil.buildUIDFile = function  (rmFx_UID) {
  35.     // =========================================================================
  36.         var tempDir = Components.classes["@mozilla.org/file/directory_service;1"]
  37.             .getService(Components.interfaces.nsIProperties)
  38.             .get("TmpD", Components.interfaces.nsIFile);
  39.             
  40.         tempDir.append( "tempMsg" + rmFx_UID );
  41.  
  42.         return  tempDir.path;
  43.     }
  44.  
  45.    
  46.     rmFxUtil.readInFileContents = function (tmpFile) {
  47.     // =========================================================================
  48.         var sfile = Components.classes["@mozilla.org/file/local;1"]
  49.                 .createInstance(Components.interfaces.nsILocalFile);
  50.         sfile.initWithPath(tmpFile);
  51.     
  52.         try {
  53.             netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
  54.         } catch (e) {
  55.             rmFxUtil.PromptAlert("Permission to read file was denied. " + e.name  +  " -- " + e.message);
  56.             return null;
  57.         }
  58.     
  59.         var is = Components.classes["@mozilla.org/network/file-input-stream;1"]
  60.             .createInstance( Components.interfaces.nsIFileInputStream );
  61.         try {
  62.             is.init( sfile,0x01, 00004, null);
  63.         }
  64.         catch ( e ) {
  65.             rmFxUtil.PromptAlert("Could not read reminder file: " + e.name  +  " -- " + e.message);
  66.             return null;
  67.         }        
  68.         // Now, read from the stream
  69.         var scriptableStream = Components.classes["@mozilla.org/scriptableinputstream;1"]
  70.                                          .createInstance(Components.interfaces.nsIScriptableInputStream);
  71.         scriptableStream.init(is);
  72.         var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
  73.                                   .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  74.         converter.charset = "UTF-8";  // The character encoding you want, using UTF-8 here
  75.         
  76.         var chunk = scriptableStream.read(scriptableStream.available());
  77.         scriptableStream.close();
  78.         var input = null;
  79.         try {
  80.              input = converter.ConvertToUnicode(chunk);
  81.         }
  82.         catch( e ) {
  83.             input = chunk;
  84.         }        
  85.         return input;
  86.     }   
  87.     
  88.       rmFxUtil.makeMsgFile =    function (content, tempFile) {
  89.     // =========================================================================
  90.           var sfile = Components.classes["@mozilla.org/file/local;1"]
  91.                 .createInstance(Components.interfaces.nsILocalFile);
  92.         try {
  93.          sfile.initWithPath(tempFile);
  94.         } catch (ex) {
  95.             return null;
  96.         }
  97.         if (sfile.exists()) {
  98.             sfile.remove(true);
  99.         }
  100.         sfile.create(sfile.NORMAL_FILE_TYPE, 0600);
  101.         var stream = Components.classes['@mozilla.org/network/file-output-stream;1']
  102.                 .createInstance(Components.interfaces.nsIFileOutputStream);
  103.         stream.init(sfile, 2, 0x200, false);         // open as "write only"
  104.         stream.write(content, content.length);
  105.         stream.close();
  106.         return sfile;
  107.     }    
  108.  
  109.     rmFxUtil.makeMsgFile8 =    function (outputStr, file) {
  110.     // =========================================================================
  111.         var sfile = Components.classes["@mozilla.org/file/local;1"]
  112.                 .createInstance(Components.interfaces.nsILocalFile);
  113.         sfile.initWithPath(file);
  114.         
  115.         var outputStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
  116.             .createInstance( Components.interfaces.nsIFileOutputStream );
  117.         outputStream.init( sfile, 0x04 | 0x08 | 0x20, 420, 0 );
  118.         
  119.         var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
  120.                                   .createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
  121.         converter.charset = "UTF-8";
  122.         
  123.         var chunk = null;
  124.         try {
  125.             chunk = converter.ConvertFromUnicode(outputStr);
  126.         }
  127.         catch( e ) {
  128.             chunk = outputStr;
  129.         }
  130.         outputStream.write(chunk, chunk.length);    
  131.         
  132.          var fin = converter.Finish();
  133.          if (fin.length > 0)
  134.            outputStream.write(fin, fin.length);
  135.          outputStream.close();
  136.          return sfile;
  137.     }
  138.  
  139.     /**
  140.      *     Debugging support, prompts an Alert and writes it to console
  141.      */
  142.     rmFxUtil.PromptAlert = function (msgErr) {
  143.     // =========================================================================
  144.         var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  145.             .getService(Components.interfaces.nsIPromptService);
  146.         promptService.alert(window, "ReminderFox Error", msgErr);
  147.         
  148.         rmFxUtil.dump2Console (msgErr)
  149.     };
  150.  
  151.     rmFxUtil.dump2Console = function (logString) {
  152.     // =========================================================================
  153.     // TB3/SM2/FX3:    Application.console.log("reminderFox: " + logString)
  154.         var rmFx_consoleService = Components.classes["@mozilla.org/consoleservice;1"]
  155.             .getService(Components.interfaces.nsIConsoleService);
  156.         rmFx_consoleService.logStringMessage("reminderFox: " + logString);
  157.         
  158.     };     
  159.  
  160.     rmFxUtil.copytoClipboard = function (data)  {
  161.     // =========================================================================
  162.     // Generic function to copy the data to Clipboard 
  163.         var clipboard = Components.classes["@mozilla.org/widget/clipboardhelper;1"];
  164.         clipboard = clipboard.getService(Components.interfaces.nsIClipboardHelper);
  165.         clipboard.copyString(data );
  166.     };    
  167.  
  168.  
  169.     /**
  170.      * 
  171.      *     rmFxUtil Dialog Confirm Service to support 2 or 3 key choice
  172.      * 
  173.      <br>            [key0] [key1]
  174.      <br>       or   [key0] [key2] [key1]
  175.      * 
  176.      *     @param    title, the headline of dialog
  177.      *     @param    msg, typically a question
  178.      *     @param    key0
  179.      *     @param    key1
  180.      *     @param    key2, optional, decides if 2 or 3 buttons
  181.      */
  182.     rmFxUtil.ConfirmEx = function (title, msg, key0, key1, key2) {
  183.     // =========================================================================
  184.         var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"]
  185.             .getService(Components.interfaces.nsIPromptService);
  186.     
  187.         var flags =
  188.             promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0 +
  189.             promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_1;         // flags = [integer] 32639
  190.  
  191.         if (!!key2) {
  192.         var flags =
  193.             promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_0 +
  194.             promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_1 +
  195.             promptService.BUTTON_TITLE_IS_STRING * promptService.BUTTON_POS_2;        // flags = [integer] 8355711
  196.         } 
  197.         return  promptService.confirmEx(window,
  198.                 title, msg,    flags, key0, key1, key2, null, {});          
  199.     };
  200.  
  201.     
  202.     
  203.     // Utilities  from \mail\components\preferences\applications.js
  204.  
  205.     rmFxUtil.getDisplayNameForFile = function (aFile) {        // +++2do gW_OSspecfic ???
  206.     // =========================================================================
  207.     /*
  208.     //@line 85 "e:\buildbot\win32_build\build\mail\components\preferences\applications.js"
  209.     */
  210.       if (aFile instanceof Components.interfaces.nsILocalFileWin) {
  211.         try {
  212.           return aFile.getVersionInfoField("FileDescription");
  213.         }
  214.         catch(ex) {
  215.           // fall through to the file name
  216.         }
  217.       }
  218.     /*
  219.     //@line 108 "e:\buildbot\win32_build\build\mail\components\preferences\applications.js"
  220.     */
  221.       return aFile.leafName;
  222.     }
  223.  
  224.     rmFxUtil.getLocalHandlerApp = function (aFile) {        // +++2do gW_OSspecfic ???
  225.     // =========================================================================
  226.       var localHandlerApp = Components.classes["@mozilla.org/uriloader/local-handler-app;1"]
  227.                                       .createInstance(Components.interfaces.nsILocalHandlerApp);
  228.       localHandlerApp.name = rmFxUtil.getDisplayNameForFile(aFile);
  229.       localHandlerApp.executable = aFile;
  230.  
  231.       return localHandlerApp;
  232.     }
  233.  
  234.     rmFxUtil.isValidHandlerExecutable = function (aExecutable) { // +++2do gW_OSspecfic ???
  235.     // =========================================================================
  236.         return aExecutable &&
  237.                aExecutable.exists() &&
  238.                aExecutable.isExecutable() &&
  239.  
  240.     //@line 905 "e:\buildbot\win32_build\build\mail\components\preferences\applications.js"
  241.        aExecutable.leafName != ".exe";
  242.     //@line 913 "e:\buildbot\win32_build\build\mail\components\preferences\applications.js"
  243.       }
  244.  
  245.     
  246.     
  247. /* -----------    
  248.         function about_startup() {    
  249.  
  250.             var label = document.getElementById('rmFx_Version').getAttribute("value");
  251.         
  252.             var versionString = label + "  " + REMINDER_FOX_MIGRATED_PREF_VERSION;
  253.              document.getElementById('rmFx_Version')
  254.                 .setAttribute( "value", versionString );
  255.  
  256.            var jarFile = Components.classes["@mozilla.org/file/directory_service;1"]
  257.                  .getService(Components.interfaces.nsIProperties)
  258.                  .get("ProfD", Components.interfaces.nsIFile);
  259.                  
  260.            // FX and TB :    ProfD\extensions\{ada4b710-8346-4b82-8199-5de2b400a6ae}\chrome\reminderfox.jar"      
  261.             // SM:              ProfD\chrome\reminderfox.jar"
  262.  
  263.             var appId = Components.classes["@mozilla.org/xre/app-info;1"]
  264.                     .getService(Components.interfaces.nsIXULAppInfo);
  265.  
  266.     //        if ( appId.name != "SeaMonkey") {
  267.                jarFile.append( "extensions" );
  268.                jarFile.append( "{ada4b710-8346-4b82-8199-5de2b400a6ae}" );
  269.     //       }
  270.                    
  271.            jarFile.append( "chrome" );        
  272.            jarFile.append( "reminderfox.jar" );        
  273.  
  274.  
  275.             var jar = new Date();
  276.             jar.setTime(jarFile.lastModifiedTime);
  277.  
  278.              document.getElementById('logoText')
  279.                 .setAttribute( "tooltiptext", "XPI as of: " + jar);
  280.         
  281.             rmFxUtil.copytoClipboard("reminderfox.XPI as of: " + jar);
  282.             sizeToContent();
  283.                     
  284.             var version = Components.classes["@mozilla.org/extensions/manager;1"]
  285.                  .getService(Components.interfaces.nsIExtensionManager)
  286.                  .getItemForID("{ada4b710-8346-4b82-8199-5de2b400a6ae}").version 
  287.             document.getElementById('rmFx_Version')
  288.                 .setAttribute( "value", "v:" + version);        
  289.     }    
  290.     ---------- */